package org.hardcode.rpc.annotation;

import org.springframework.beans.factory.annotation.Autowired;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Autowired
public @interface RpcReference {
    //版本号
    String version() default "1.0.0";
    //注册中心类型  目前支持的类型包含:zookeeper,nacos, etcd,consul
    String registryType() default "zookeeper";

    //注册地址
    String  registryAddress() default "127.0.0.1:2181";
    //负载均衡 类型  默认基于 ZK的一致性 Hash
    String  loadBalanceType()  default "zkconsistenthash";

    //序列化类型，目前的类型包含 : protostuff,kryo,json,jdk,hessian2,fst
    String  serializationType() default "protostuff";
    //超时时间 默认 5s
    long timeout() default 5000;
    //是否异步执行
    boolean async() default  false;
    //是否单向调用
    boolean  oneway() default  false;
    //代理的类型 jdk:jdk代理, javassist:javassist代理,cglib:cglib代理
    String  proxy() default "jdk";
    //服务分组 默认 空
    String  group() default "";

}
